#include "stm32f10x_usart.h"
#include "stm32f10x.h"
#include "bsp_led.h" 
#include "user_type.h"
#define PORT_CLK_USART1 RCC_APB2Periph_GPIOA 
#define RECV_MSG_LENGTH 50
#define USART_RXFIFO_SIZE 50
// #define DEBUG_USART1_IRQHandler  USART1_IRQHandler 

// typedef struct HAL_USART_CR1
// {
// 	uint16 SBK:1;//断开发送帧，0没发送断开字符，1将发送断开字符
// 	uint16 RWU:1;//0唤醒模式，1静默模式
// 	uint16 RE:1;//接收使能，启动后搜索引脚上的起始位
// 	uint16 TE:1;//发送使能，除了智能卡模式，如果TE位上有个0脉冲(即设置为’0’之后再设置为’1’)，会在当前数据字传输完成后，发送一个“前导符”(空闲总线)。
// 	uint16 IDLEIE:1;//总线空闲中断使能，需要SR寄存器的IDLE置1才可产生中断
// 	uint16 RXNEIE:1//接收缓冲区非空中断使能，当SR寄存器中的ORE或者RXNE为1产生中断
// 	uint16 TCIE:1;//发送完成完成使能，SR.TC=1时产生中断
// 	uint16 TXEIE:1//发送缓冲区空中断使能，需要SR.TXE=1
// 	uint16 PEIE:1//PE中断使能，SR.PE=1使能可用
// 	uint16 PS:1;//校验选择，奇校验或者偶校验
// 	uint16 PCE:1;//检验控制使能，若=1，且cr1.m=0，最高位第8插入校验位，若m=1，第9位插入校验位，字节传输完成后生效
// 	uint16 WAKE:1;//0空闲总线唤醒，1地址标记唤醒
// 	uint16 M:1;//字长，0：8位，1：9位
// 	uint16 UE:1;//USART使能  
// 	uint16 reserved0:2;
// 	uint16 reserved1;
// }usart_cr1;

// typedef struct HAL_USART_CR2
// {
// 	uint16 ADD:4;// 3-0
//     uint16 rsd:1; 4
// 	uint16 LBDL:1;// 5
// 	uint16 LBDIE:1;// 6
// 	uint16 RESERVED0:1;// 7
// 	uint16 LBCL:1;// 8
// 	uint16 CPHA:1// 9
// 	uint16 CPOL:1;//10
// 	uint16 CLKEN:1// 11
// 	uint16 STOP:2// 12-13
// 	uint16 LINEN:1;//  14
// 	uint16 reserved0:1;//15
// 	uint16 reserved1;
// }usart_cr2;

// typedef struct HAL_USART_CR3
// {
// 	uint16 EIE:4;// 0
//     uint16 IREN:1; 1
// 	uint16 IRLP:1;// 2
// 	uint16 HDSEL:1;// 3
// 	uint16 NACK:1;// 4
// 	uint16 SCEN:1;// 5
// 	uint16 DMAR:1// 6
// 	uint16 DMAT:1;//7
// 	uint16 RTSE:1// 8
// 	uint16 CTSE:2// 9
// 	uint16 CTSIE:1;//  10
// 	uint16 reserved0:1;//11
// 	uint16 reserved1;
// }usart_cr3;
// typedef struct HAL_USART
// {
// 	usart_cr1 CR1;
//     usart_cr2 CR2
//     usart_cr3 CR3


// }hal_usart;


void uart_init(void); 
void Usart_Sendstring( USART_TypeDef * pUSARTx, char* str,uint8_t len); 
void Usart_SendCharArray( USART_TypeDef * pUSARTx, char* str,uint8_t len);

















